package com.coder520.sync_learning.demo.hookTest;

import java.util.concurrent.TimeUnit;

public class RuntimeHookTestExample {

    /**
     * 钩子线程，在当前没有可以活动的非守护线程当中时，就是执行这个钩子线程，可以注册多个钩子线程
     * @param args
     */
    public static void main(String[] args){
        // 为线程注入钩子线程
        Runtime.getRuntime().addShutdownHook(new Thread(){
            @Override
            public void run() {
                try {
                    System.out.println("这个钩子线程正在运行哦");
                    TimeUnit.SECONDS.sleep(2);
                }catch (InterruptedException e){
                    e.printStackTrace();
                }

                System.out.println("当前的钩子线程结束了");
            }
        });


        Runtime.getRuntime().addShutdownHook(new Thread(){
            @Override
            public void run() {
                try {
                    System.out.println("这个钩子2线程正在运行哦");
                    TimeUnit.SECONDS.sleep(2);
                }catch (InterruptedException e){
                    e.printStackTrace();
                }

                System.out.println("当前的钩子2线程结束了");
            }
        });


        System.out.println("所有的钩子线程都结束了");

    }
}
